package article4.noninstance;

/**
 * 不能实例化的类
 * 由于显式的构造器是私有的，所以不可以在该类的外部访问它 AssertionError是必需的，
 * 但是它可以避免不小心在类的 内部调用构造器 它保证该类在任何情况下都不会被实例化。
 * 这种习惯用法有点违背直觉，好像构造器就是专门设计成不能被调用一样。因此，明智的做法就是在代码中增加一条注释，如下所示
 * 这种习惯用法也有副作用，它使得一个类不能被子类化 所有的构造器都必须显式或隐式地调用超类（ superclass ）构造器，
 * 在这种情形下，子类就没有可访问的超类构造器可调用了
 *
 * @author cctv
 */
public class UtilityClass {
    /**
     * suppress default constructor for noninstantiability
     * 私有的构造器实现不能实例化的类
     */
    private UtilityClass(){
        throw new AssertionError();
    }
}
